package com.uuah.server.config.spring.parsers;

import com.uuah.server.config.spring.parsers.assembly.configuration.IValueMap;

import java.util.Map;

/**
 * @see com.uuah.server.config.spring.parsers.assembly.configuration.IPropertyConfiguration
 */
public interface IUuahDefinitionParserConfiguration {

	/**
	 * These are prepended to existing processors
	 * 
	 * @param preProcessor
	 */
	IUuahDefinitionParserConfiguration registerPreProcessor(
			PreProcessor preProcessor);

	/**
	 * These are appended to existing processors
	 * 
	 * @param postProcessor
	 */
	IUuahDefinitionParserConfiguration registerPostProcessor(
			PostProcessor postProcessor);

	IUuahDefinitionParserConfiguration addReference(String propertyName);

	IUuahDefinitionParserConfiguration addMapping(String propertyName,
			Map mappings);

	IUuahDefinitionParserConfiguration addMapping(String propertyName,
			String mappings);

	IUuahDefinitionParserConfiguration addMapping(String propertyName,
			IValueMap mappings);

	IUuahDefinitionParserConfiguration addAlias(String alias, String propertyName);

	IUuahDefinitionParserConfiguration addCollection(String propertyName);

	IUuahDefinitionParserConfiguration addIgnored(String propertyName);

	IUuahDefinitionParserConfiguration removeIgnored(String propertyName);

	IUuahDefinitionParserConfiguration setIgnoredDefault(boolean ignoreAll);

	IUuahDefinitionParserConfiguration addBeanFlag(String flag);

}